import java.util.Arrays;
import java.util.Scanner;

/**
 * 
 * 判断一组不等式是否满足约束并输出最大差
 * 
 * 题目描述

给定一组不等式，判断是否成立并输出不等式的最大差(输出浮点数的整数部分)

要求:

不等式系数为 double类型，是一个二维数组
不等式的变量为 int类型，是一维数组;
不等式的目标值为 double类型，是一维数组
不等式约束为字符串数组，只能是:“>”,“>=”,“<”,“<=”,“=”，
例如，不等式组:

a11x1+a12x2+a13x3+a14x4+a15x5<=b1;

a21x1+a22x2+a23x3+a24x4+a25x5<=b2;

a31x1+a32x2+a33x3+a34x4+a35x5<=b3;

最大差 = max{(a11x1+a12x2+a13x3+a14x4+a15x5-b1),(a21x1+a22x2+a23x3+a24x4+ a25x5-b2),(a31x1+a32x2+a33x3+a34x4+a35x5-b3)},

类型为整数(输出浮点数的整数部分)

输入描述
a11,a12,a13,a14,a15,a21,a22,a23,a24,a25, a31,a32,a33,a34,a35,x1,x2,x3,x4,x5,b1,b2,b3,<=,<=,<=

1)不等式组系数(double类型):

a11,a12,a13,a14,a15

a21,a22,a23,a24,a25

a31,a32,a33,a34,a35

2)不等式变量(int类型):x1,x2,x3,x4,x5

3)不等式目标值(double类型):b1,b2,b3

4)不等式约束(字符串类型):<=,<=,<=

输出描述
true或者 false，最大差

用例
输入	2.3,3,5.6,7,6;11,3,8.6,25,1;0.3,9,5.3,66,7.8;1,3,2,7,5;340,670,80.6;<=,<=,<=
输出	false 458
说明	无
输入	2.36,3,6,7.1,6;1,30,8.6,2.5,21;0.3,69,5.3,6.6,7.8;1,13,2,17,5;340,67,300.6;<=,>=,<=
输出	false 758
说明	无

本题注意最大差输出的是：输出浮点数的整数部分

这个不是向下取整，如果采用向下取整，负数最大差会有问题。

 */
public class 判断一组不等式是否满足约束并输出最大差 {
    
    public static void main(String[] args) {
    

        try{

            Scanner scanner = new Scanner(System.in);

            //先按;号拆分，再按,拆分，拼接成一个二维字符数组

            String[][] originArr = Arrays.stream(scanner.nextLine().split(";")).map(s -> s.split(",")).toArray(String[][]::new);

            double[] doubleArrA1 = Arrays.stream(originArr[0]).mapToDouble(Double::parseDouble).toArray();
            double[] doubleArrA2 = Arrays.stream(originArr[1]).mapToDouble(Double::parseDouble).toArray();
            double[] doubleArrA3 = Arrays.stream(originArr[2]).mapToDouble(Double::parseDouble).toArray();
            double[] doubleArrX = Arrays.stream(originArr[3]).mapToDouble(Double::parseDouble).toArray();
            double[] doubleArrB = Arrays.stream(originArr[4]).mapToDouble(Double::parseDouble).toArray();
            String[] opertorArr = Arrays.stream(originArr[5]).toArray(String[]::new);


            //按照题目中的计算公式

            //1、不等式 1  a11x1+a12x2+a13x3+a14x4+a15x5<=b1;
            double diff1 = doubleArrA1[0]*doubleArrX[0]+
            doubleArrA1[1]*doubleArrX[1]+
            doubleArrA1[2]*doubleArrX[2]+
            doubleArrA1[3]*doubleArrX[3]+
            doubleArrA1[4]*doubleArrX[4] - doubleArrB[0];

            //2、不等式 2  a21x1+a22x2+a23x3+a24x4+a25x5<=b2;
            double diff2 = doubleArrA2[0]*doubleArrX[0]+
            doubleArrA2[1]*doubleArrX[1]+
            doubleArrA2[2]*doubleArrX[2]+
            doubleArrA2[3]*doubleArrX[3]+
            doubleArrA2[4]*doubleArrX[4] - doubleArrB[1];

            //2、不等式 3  a31x1+a32x2+a33x3+a34x4+a35x5<=b3;
            double diff3 = doubleArrA3[0]*doubleArrX[0]+
            doubleArrA3[1]*doubleArrX[1]+
            doubleArrA3[2]*doubleArrX[2]+
            doubleArrA3[3]*doubleArrX[3]+
            doubleArrA3[4]*doubleArrX[4] - doubleArrB[2];
            
            //根据输入的操作符判断3 个不等式是否成立

            boolean isRight = assertRight(diff1, opertorArr[0]) 
            & assertRight(diff2, opertorArr[1]) & 
            assertRight(diff3, opertorArr[2]);

            double maxDiff = Math.max(diff3, Math.max(diff1, diff2));

            System.out.println(isRight + " " + (int) maxDiff);


        }catch(Exception e){

            e.printStackTrace();
        }
    }

    private static boolean assertRight(double diffValue, String operator){

        switch (operator) {
            case ">":
                return diffValue > 0;
            case ">=":
                return diffValue >= 0;
            case "<":
                return diffValue < 0;
            case "<=":
                return diffValue <= 0;
            case "==":
                return diffValue == 0;
        
            default:
                return false;
        }
    }
}
